package edu.megatrend.fkn.rsw.ocenjivanje.logika;

import java.util.Enumeration;
import java.util.List;
import java.util.Properties;

import javax.servlet.http.HttpServletRequest;

import edu.megatrend.fkn.rsw.ocenjivanje.beans.Obaveza;
import edu.megatrend.fkn.rsw.ocenjivanje.beans.Predmet;
import edu.megatrend.fkn.rsw.ocenjivanje.data.DAOcenjivanje;
import edu.megatrend.fkn.rsw.ocenjivanje.data.IBean;

public class KonfigLogika {
	private Properties formValues;
	private DAOcenjivanje ocenjivanje;

	public static String HTML_TYPE_TABLE = "table";
	public static String HTML_TYPE_SELECT = "select";

	public KonfigLogika(Properties formValues) {
		super();
		this.formValues = formValues;
		ocenjivanje = DAOcenjivanje.getInstance();
	}

	public String obradi() {
		String returnValue = "";

		// Dodavanje predmeta u bazu.
		if (formValues.getProperty("naziv-predmeta") != null) {
			Predmet predmet = new Predmet();
			predmet.setIdPred(formValues.getProperty("naziv-predmeta"));
			predmet.setNaziv(formValues.getProperty("naziv-predmeta"));
			ocenjivanje.update(predmet);
			returnValue = formValues.getProperty("naziv-predmeta");
		}
		// Dodavanje predispitnih obaveza
		if (formValues.getProperty("naziv-predispitne-obaveze") != null) {
			Obaveza obaveza = new Obaveza();
			String odabraniPredmet = formValues.getProperty("odabrani-predmet");
			String nazivObaveze = formValues
					.getProperty("naziv-predispitne-obaveze");
			double maxBrojPoena = Double.parseDouble(formValues
					.getProperty("max-broj-poena"));
			Boolean prisutnost = false;
			if (formValues.getProperty("prisutnost") != null) {
				prisutnost = true;
			}

			obaveza.setIdPred(odabraniPredmet);
			obaveza.setNaziv(nazivObaveze);
			obaveza.setBrMaxPoena(maxBrojPoena);
			obaveza.setPrisutnost(prisutnost);
			ocenjivanje.update(obaveza);

			returnValue = "Uspesno je dodata obaveza " + nazivObaveze
					+ " za predmet " + odabraniPredmet
					+ " sa makismalnim brojem poena " + maxBrojPoena
					+ " i prisutnoscu podesenom na " + prisutnost;
		}

		return returnValue;
	}

	public String getAllPredmet(String type) {
		String returnValue = new String();
		List<IBean> list = ocenjivanje.getAllBeans(DAOcenjivanje.PREDMET_TYPE);
		int count = 0;
		for (IBean iBean : list) {
			count++;
			if (type.equals(HTML_TYPE_TABLE)) {
				returnValue += "<tr><td>" + count + "</td><td>"
						+ ((Predmet) iBean).getNaziv() + "</td>  </tr> ";
			} else if (type.equals(HTML_TYPE_SELECT)) {
				returnValue += "<option value=\""
						+ ((Predmet) iBean).getIdPred() + "\">"
						+ ((Predmet) iBean).getNaziv() + "</option> ";
			}

		}
		return returnValue;

	}

	public String getTablePredispitneObaveze() {
		String returnValue = "<table border=1>\n";
		returnValue += "<thead><th></th><th>Id predmeta</th><th>Naziv obaveze</th><th>Mak. br. poena</th><th>Prisutnost</th></thead><tbody>";
		List<IBean> list = ocenjivanje.getAllBeans(DAOcenjivanje.OBAVEZA_TYPE);
		int count = 0;
		for (IBean iBean : list) {
			count++;
			returnValue += "<tr><td>" + count + "</td><td>"
					+ ((Obaveza) iBean).getIdPred() + "</td><td>"
					+ ((Obaveza) iBean).getNaziv() + "</td><td> "
					+ ((Obaveza) iBean).getBrMaxPoena() + "</td><td>"
					+ ((Obaveza) iBean).isPrisutnost() + "</td>  </tr> ";

		}
		returnValue += "</tbody></table>";
		return returnValue;

	}
}
